package common

import (
	"manage/api/user"
	"net/http"

	"github.com/gin-gonic/gin"
)

type IUser interface {
	OnSucceed()
	OnFailed()
}

type JsonMsg struct {
	Ctx  *gin.Context `json:"-"`
	Flag bool         `json:"-"`
	Code int          `json:"code"`
	Msg  string       `json:"msg"`
	Err  *string      `json:"err,omitempty"`
	Data any          `json:"data,omitempty"`
}

type OnUserEvent JsonMsg

func (o OnUserEvent) init() {
	// o.OnFailed()

}

// func OnSucceed(jm *JsonMsg) func(*gin.Context) {
// 	return func(ctx *gin.Context) {

// 	}
// }

func CheckReply(ctx *gin.Context, resp *user.UserResponse, err error) {

	// JsonMsg{
	// 	Ctx: ctx,
	// 	Code: int(resp.Code),
	// 	Msg: resp.Msg,
	// 	Err: err.Error(),
	// }

}

// func (jm *JsonMsg) OnSucceed() {

// }

// func (jm *JsonMsg) OnFailed() {
// 	if value := strings.Split(jm.Msg, ":"); len(value) != 0 {
// 		jm.Msg = value[1]
// 	}
// 	jm.Ctx.JSON(http.StatusOK, jm)
// }

// UserEvent 用户事件
// func UserEvent(resp IUser) IUser {
// 	resp.OnSucceed()

// 	return resp
// }

// func OnUserEvent(jm *JsonMsg) {

// 	// return jm
// }

func OnSucceed() {

}

func OnFailed(code int, msg string, err string) *JsonMsg {
	return &JsonMsg{
		Code: code,
		Msg:  msg,
		Err:  &err,
	}
}

func OnSend(jm *JsonMsg) {
	if !jm.Flag {
		jm.Ctx.JSON(http.StatusOK, jm)
	} else {
		jm.Ctx.JSON(jm.Code, jm)
	}
}
